package fr.thelem.gestiondemandesthelem.dao;

import java.util.Collection;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import fr.thelem.gestiondemandesthelem.dao.model.AdministrateurEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDParametreDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDParametreDemandeValeursEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDParametreEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDPointDeControleEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPParametreDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPParametreEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPPointDeControleEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CategorieEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CommentairesEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CorrespondanceParametresEntity;
import fr.thelem.gestiondemandesthelem.dao.model.EtatEntity;
import fr.thelem.gestiondemandesthelem.dao.model.MessageEntity;
import fr.thelem.gestiondemandesthelem.dao.model.PersonneEntity;
import fr.thelem.gestiondemandesthelem.dao.model.SousCategorieEntity;
import fr.thelem.gestiondemandesthelem.dao.model.TypeDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.UtilisateurEntity;

/**
 * Couche d'accès aux données de l'application. Si l'application se complexifie, il est recommandé de découper les en plusieurs classes d'accès aux données.
 */
public interface IAppliDao {

    Collection<String> recupererAllCPDemande();

    void ajouterEtat(String nomEtat);

    CDParametreEtapeEntity recupererParametreCorrespondantDemande(int CDParametreDemande);

    CDParametreDemandeEntity recupererParametreCorrespondantEtape(int CDParametreEtape);

    void enleverAdmin(String loginLDAP);

    void enleverUtilisateur(String loginLDAP);

    PersonneEntity recupererPersonne(String loginLDAP);

    AdministrateurEntity recupererAdministrateur(String loginLDAP);

    UtilisateurEntity recupererUtilisateur(String loginLDAP);

    Collection<UtilisateurEntity> recupererUtilisateurs();

    Collection<AdministrateurEntity> recupererAdministrateurs();

    void majAdministrateur(String loginLDAP, Date dateMiseAJourPersonne);

    void majUtilisateur(String loginLDAP, Date dateMiseAJourPersonne);

    void ajouterAdministrateur(String loginLDAP, Date dateCreationPersonne, Date dateMiseAJourPersonne);

    void ajouterUtilisateur(String loginLDAP, Date dateCreationPersonne, Date dateMiseAJourPersonne);

    boolean isAdministrateurExiste(String loginLDAP);

    boolean isUtilisateurExiste(String loginLDAP);

    boolean isTitreExiste(String titre);

    boolean recupererObligatoire(int idParam, int idDemande);

    void ajouterCPDemande(int idCDDemande, String titreDemande, String referenceDemande, Map<String, String> paramsDemande, Map<String, String> paramsMulti,
            String commentaire, PersonneEntity personne);

    Collection<CDParametreDemandeEntity> recupererCDParametreDemandes(int idCDDemande);

    Collection<CPParametreDemandeEntity> recupererCPParametreDemandes(int idCDParametreDemande);

    Collection<CDParametreDemandeValeursEntity> recupererCDParametreDemandesValeurs(int idCDParametreDemande);

    Collection<CDPointDeControleEntity> recupererCDPointDeControles(int idCDDemande);

    Collection<CPPointDeControleEntity> recupererCPPointDeControles(int idCDPointDeControle);

    CDParametreDemandeEntity recupererCDParametreDemande(int idParamDemande);

    /**
     * Méthode qui permet d'ajouter un nouveau message à une date donnée par un administrateur
     * 
     * @param message
     * @param idAdministrateur
     * @param date
     */

    void ajouterMessage(String message, AdministrateurEntity Administrateur, Date date);

    /**
     * Récupère les messages postés par les administrateurs
     * 
     * @return une collection de Message
     */
    Collection<MessageEntity> recupererMessages();

    /**
     * Récupère le dernier message posté
     * 
     * @return
     */
    MessageEntity recupererDernierMessage();

    /**
     * Supprimer un message par son identifiant
     * 
     * @param identifiantMessage
     */
    void supprimerMessage(int identifiantMessage);

    /**
     * Méthode pour ajouter un type de demande dans le paramétrage des demandes de l'administrateur
     * 
     * @param typeDemande
     */
    int ajouterTypeDemande(String typeDemande);

    /**
     * Méthode pour récupérer les types de demande
     * 
     * @return Collection<TypeDemandeEntity>
     */

    Collection<TypeDemandeEntity> recupererTypesDemande();

    /**
     * Méthode pour supprimer un type de demande dans le paramétrage des demandes de l'administrateur
     * 
     * @param idTypeDemande
     */
    void supprimerTypeDemande(int idTypeDemande);

    /**
     * Méthode pour ajouter une catégorie dans le paramétrage des demandes de l'administrateur
     * 
     * @param categorie
     * @param idTypeDemande
     * @return int
     */
    int ajouterCategorie(int idTypeDemande, String categorie);

    /**
     * Méthode pour récupérer les catégories reliées à un type de demande
     * 
     * @return Collection<CategorieEntity>
     */

    Collection<CategorieEntity> recupererCategories(int idTypeDemande);

    /**
     * Méthode pour supprimer une catégorie dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCategorie
     */
    void supprimerCategorie(int idCategorie);

    /**
     * Méthode pour ajouter une sous-catégorie dans le paramétrage des demandes de l'administrateur
     * 
     * @param sousCategorie, idCategorie
     * @return int
     */
    int ajouterSousCategorie(int idCategorie, String sousCategorie);

    /**
     * Méthode pour récupérer les sous-catégories reliées à une catégorie
     * 
     * @return Collection<SousCategorieEntity>
     */

    Collection<SousCategorieEntity> recupererSousCategories(int idCategorie);

    /**
     * Méthode pour supprimer une sous-catégorie dans le paramétrage des demandes de l'administrateur
     * 
     * @param idSousCategorie
     */
    void supprimerSousCategorie(int idSousCategorie);

    /**
     * Méthode pour ajouter une CDDemande dans le paramétrage des demandes de l'administrateur
     * 
     * @param idTypeDemande
     * @param idSousCategorie
     * @param CDDemande
     * @return int
     */
    int ajouterCDDemande(int idTypeDemande, int idSousCategorie, String CDDemande);

    /**
     * Méthode pour récupérer les CDDemande reliées à une sous-catégorie
     * 
     * @return Collection<CDDemandeEntity>
     */

    Collection<CDDemandeEntity> recupererCDDemandes(int idSousCategorie);

    /**
     * Méthode pour récupérer une CDDemande
     * 
     * @return CDDemandeEntity
     */

    CDDemandeEntity recupererCDDemande(int idCDDemande);

    /**
     * Méthode pour supprimer une CDDemande dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDDemande
     */
    void supprimerCDDemande(int idCDDemande);

    /**
     * Méthode pour ajouter une étape CD dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDDemande
     * @param CDEtape
     * @param descriptionCDEtape
     * @return int
     */
    int ajouterCDEtape(int idCDDemande, String CDEtape, String descriptionCDEtape);

    /**
     * Méthode pour ajouter une étape CD dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDDemande
     * @param idCDEtape
     * @return String
     */
    String ajouterSelectionCDEtape(int idCDDemande, int idCDEtape);

    /**
     * Méthode pour récupérer les étapes CD reliées à une CDDemande
     * 
     * @return Collection<CDEtapeEntity>
     */

    Collection<CDEtapeEntity> recupererCDEtapes(int idCDDemande);

    /**
     * Méthode pour récupérer toutes les étapes CD n'appartenant pas à la demande
     * 
     * @return Collection<CDEtapeEntity>
     */

    Collection<CDEtapeEntity> recupererToutesCDEtapes(int idCDDemande);

    /**
     * Méthode pour récupérer la description d'une CDétape
     * 
     * @param idCDEtape
     * @return
     */
    String recupererDescriptionCDEtape(int idCDEtape);

    /**
     * Méthode pour modifier la description d'une CDétape
     * 
     * @param idCDEtape
     * @param descriptionCDEtape
     */
    void modifierDescriptionEtape(int idCDEtape, String descriptionCDEtape);

    /**
     * Méthode pour supprimer une étape CD dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDEtape, idCDDemande
     */
    void supprimerCDEtape(int idCDEtape, int idCDDemande);

    /**
     * Méthode pour supprimer définitivement une étape CD dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDEtape
     */
    void supprimerDefinitivementCDEtape(int idCDEtape);

    /**
     * Méthode pour ajouter un CDPointDeControle
     * 
     * @param idCDDemande
     * @param CDPointControle
     * @param typeSaisieCDPointControle
     * @return
     */
    int ajouterCDPointControle(int idCDDemande, String CDPointControle, String typeSaisieCDPointControle);

    /**
     * Ajout d'un CDPointDeControle existant dans une demande
     * 
     * @param idCDDemande
     * @param idCDPointControle
     * @return
     */
    String ajouterSelectionCDPointControle(int idCDDemande, int idCDPointControle);

    /**
     * Méthode pour récupérer les CDPoints De Controle reliés à une CDDemande
     * 
     * @param idCDDemande
     * @return
     */
    LinkedList<CDPointDeControleEntity> recupererCDPointsControle(int idCDDemande);

    /**
     * Méthode pour récupérer tous les CDPoints De Controle n'appartenant pas à la demande
     * 
     * @param idCDDemande
     * @return
     */
    Collection<CDPointDeControleEntity> recupererTousCDPointsControle(int idCDDemande);

    /**
     * Méthode pour récupérer le numéro d'un CDPointDeControle dans une demande
     * 
     * @param idCDPointControle
     * @param idCDDemande
     * @return
     */
    int recupererNumeroCDPointControle(int idCDPointControle, int idCDDemande);

    /**
     * Méthode pour modifier le numéro d'un CDPointDeControle dans une demande
     * 
     * @param idCDPointControle
     * @param idCDDemande
     * @param numeroCDPointControle
     */
    void modifierNumeroCDPointControle(int idCDPointControle, int idCDDemande, int numeroCDPointControle);

    /**
     * Méthode pour tester si le numéro passé en paramètre n'est pas supérieur au plus grand numéro existant pour une demande
     * 
     * @param idCDDemande
     * @param numeroCDPointControle
     * @return
     */
    boolean testerNumeroCDPointControle(int idCDDemande, int numeroCDPointControle);

    /**
     * Méthode pour supprimer un CDPointDeControle dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDPointControle
     * @param idCDDemande
     */
    void supprimerCDPointControle(int idCDPointControle, int idCDDemande);

    /**
     * Méthode pour supprimer définitivement un CDPointDeControle dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDPointControle
     */
    void supprimerDefinitivementCDPointControle(int idCDPointControle);

    /**
     * Méthode pour ajouter un CDParametreDemande dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDDemande
     * @param CDParametreDemande
     * @param obligation
     * @param typeSaisieCDParametreDemande
     * @param descriptionCDParametreDemande
     * @param CPParametreDemande
     * @param valeursCDParametreDemande
     * @return int
     */
    int ajouterCDParametreDemande(int idCDDemande, String CDParametreDemande, boolean obligation, String typeSaisieCDParametreDemande,
            String descriptionCDParametreDemande, String valeursCDParametreDemande);

    /**
     * Méthode pour ajouter un ParametreDemande CD dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDDemande
     * @param idCDParametreDemande
     * @param obligation
     * @param descriptionCDParametreDemande
     * @return String
     */
    String ajouterSelectionCDParametreDemande(int idCDDemande, int idCDParametreDemande, boolean obligation, String descriptionCDParametreDemande);

    /**
     * Méthode pour récupérer les CDParametresDemande reliés à une CDDemande
     * 
     * @return Collection<CDEtapeEntity>
     */

    Collection<CDParametreDemandeEntity> recupererCDParametresDemande(int idCDDemande);

    /**
     * Méthode pour récupérer tous les CDParametresDemande n'appartenant pas à la demande
     * 
     * @return Collection<CDParametreDemandeEntity>
     */

    Collection<CDParametreDemandeEntity> recupererTousCDParametresDemande(int idCDDemande);

    /**
     * Méthode pour récupérer la description d'un CDParametreDemande
     * 
     * @param idCDDemande
     * @param idCDParametreDemande
     * @return
     */
    String recupererDescriptionCDParametreDemande(int idCDDemande, int idCDParametreDemande);

    /**
     * Méthode pour récupérer le type de saisie d'un CDParametreDemande
     * 
     * @param idCDParametreDemande
     * @return
     */
    String recupererTypeSaisieCDParametreDemande(int idCDParametreDemande);

    /**
     * Méthode pour modifier la description d'un CDParametreDemande
     * 
     * @param idCDDemande
     * @param idCDParametreDemande
     * @param descriptionCDParametreDemande
     */
    void modifierDescriptionCDParametreDemande(int idCDDemande, int idCDParametreDemande, String descriptionCDParametreDemande);

    /**
     * Méthode pour supprimer un CDParametreDemande dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDParametreDemande, idCDDemande
     */
    void supprimerCDParametreDemande(int idCDParametreDemande, int idCDDemande);

    /**
     * Méthode pour supprimer définitivement un CDParametreDemande dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDParametreDemande
     */
    void supprimerDefinitivementCDParametreDemande(int idCDParametreDemande);

    /**
     * Méthode pour ajouter un CDParametreDemandeValeurs dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDParametreDemande
     * @param CDParametreDemandeValeurs
     * @return int
     */
    int ajouterCDParametreDemandeValeurs(int idCDParametreDemande, String CDParametreDemandeValeurs);

    /**
     * Méthode pour récupérer les CDParametresDemandeValeurs reliés à une CDParametreDemande
     * 
     * @return Collection<CDEtapeEntity>
     */

    Collection<CDParametreDemandeValeursEntity> recupererCDParametresDemandeValeurs(int idCDParametreDemande);

    /**
     * Méthode pour supprimer un CDParametreDemandeValeurs dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDParametreDemandeValeurs, idCDParametreDemande
     */
    void supprimerCDParametreDemandeValeurs(int idCDParametreDemandeValeurs);

    /**
     * Méthode pour ajouter un CDParametreEtape dans le paramétrage des étapes de l'administrateur
     * 
     * @param idCDEtape
     * @param CDParametreEtape
     * @param typeSaisieCDParametreEtape
     * @param descriptionCDParametreEtape
     * @param valeurFixeCDParametreEtape;
     * @return
     */
    int ajouterCDParametreEtape(int idCDEtape, String CDParametreEtape, String typeSaisieCDParametreEtape, String descriptionCDParametreEtape,
            String valeurFixeCDParametreEtape);

    /**
     * Méthode pour ajouter un CDParametreEtape dans le paramétrage des étapes de l'administrateur
     * 
     * @param idCDEtape
     * @param idCDParametreEtape
     * @param valeurFixeCDParametreEtape
     * @return
     */
    String ajouterSelectionCDParametreEtape(int idCDEtape, int idCDParametreEtape, String valeurFixeCDParametreEtape);

    /**
     * Méthode pour obtenir le type d'un CD Paramètre Etape
     * 
     * @param idCDParametreEtape
     * @return
     */
    String testerTypeSaisieCDParametreEtape(int idCDParametreEtape);

    /**
     * Méthode pour récupérer les CDParametresEtape reliés à une CDEtape
     * 
     * @param idCDEtape
     * @return
     */
    Collection<CDParametreEtapeEntity> recupererCDParametresEtape(int idCDEtape);

    /**
     * Méthode pour récupérer un CDParametreEtape
     * 
     * @param idCDParametreEtape
     * @return
     */
    CDParametreEtapeEntity recupererCDParametreEtape(int idCDParametreEtape);

    /**
     * Méthode pour récupérer la valeur du CDParametreEtape
     * 
     * @param idCDEtape
     * @param idCDParametreEtape
     * @return
     */

    String recupererValeurCDParametreEtape(int idCDEtape, int idCDParametreEtape);

    /**
     * Méthode pour récupérer tous les CDParametresEtape n'appartenant pas à l'étape
     * 
     * @param idCDEtape
     * @return
     */
    Collection<CDParametreEtapeEntity> recupererTousCDParametresEtape(int idCDEtape);

    /**
     * Méthode pour modifier un CDParametreEtape
     * 
     * @param idCDEtape
     * @param idCDParametreEtape
     * @param descriptionCDParametreEtape
     * @param valeurFixeCDParametreEtape
     */
    void modifierCDParametreEtape(int idCDEtape, int idCDParametreEtape, String descriptionCDParametreEtape, String valeurFixeCDParametreEtape);

    /**
     * Méthode pour supprimer un CDParametreEtape dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDParametreEtape
     * @param idCDEtape
     */
    void supprimerCDParametreEtape(int idCDParametreEtape, int idCDEtape);

    /**
     * Méthode pour supprimer définitivement un CDParametreEtape dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDParametreEtape
     */
    void supprimerDefinitivementCDParametreEtape(int idCDParametreEtape);

    /**
     * Méthode pour ajouter un CPParametreEtape dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCDParametreEtape
     * @param CPParametreEtape
     * @return int
     */
    int ajouterCPParametreEtape(int idCDParametreEtape, String CPParametreEtape);

    /**
     * Méthode pour récupérer les CPParametresEtape reliés à une CDParametreEtape
     * 
     * @return Collection<CPParametreEtapeEntity>
     */

    Collection<CPParametreEtapeEntity> recupererCPParametresEtape(int idCDParametreEtape);

    /**
     * Méthode pour supprimer un CPParametreEtape dans le paramétrage des demandes de l'administrateur
     * 
     * @param idCPParametreEtape
     */
    void supprimerCPParametreEtape(int idCPParametreEtape);

    /**
     * Ajouter une correspondance entre idCorrespondanceParametresDemande et idCorrespondanceParametresEtape
     * 
     * @param idCorrespondanceParametresDemande
     * @param idCorrespondanceParametresEtape
     * @return
     */
    int ajouterCorrespondanceParametres(int idCorrespondanceParametresDemande, int idCorrespondanceParametresEtape);

    /**
     * Permet de récupérer les CorrespondancesParametres
     * 
     * @param idCDDemande
     * @param idCDEtape
     * @return
     */
    Collection<CorrespondanceParametresEntity> recupererCorrespondancesParametres(int idCDDemande, int idCDEtape);

    /**
     * Permet de récupérer les CDParamètresEtape qui n'ont pas encore été affectés à une correspondance
     * 
     * @param idCDEtape
     * @return
     */
    Collection<CDParametreEtapeEntity> recupererCorrespondancesParametresEtape(int idCDEtape);

    /**
     * Permet de récupérer les CDParamètresDemande qui n'ont pas encore été affectés à une correspondance
     * 
     * @param idCDDemande *
     * @return
     */
    Collection<CDParametreDemandeEntity> recupererCorrespondancesParametresDemande(int idCDDemande);

    /**
     * Supprimer une CorrespondanceParametres
     * 
     * @param idCorrespondanceParametres
     */
    void supprimerCorrespondanceParametres(int idCorrespondanceParametres);

    /**
     * Méthode pour récupérer les noms des etats
     * 
     * @return Collection<String>
     */
    Collection<String> recupererEtat();

    /**
     * Méthode pour récupérer les noms des types
     * 
     * @return Collection<String>
     */
    Collection<String> recupererType();

    Collection<CDDemandeEntity> recupererNomDemandeAdmin();

    Collection<CDDemandeEntity> recupererNombreDemandeAdmin();

    Collection<CPDemandeEntity> recupererDemande();

    Collection<CPDemandeEntity> recupererPersonneEffectueDemande();

    Collection<CategorieEntity> recupererNomCategorie();

    /**
     * Méthode pour récupérer la liste des demandes qui sont en cours ou en attente
     * 
     * @return Collection<DemandeEntity>
     */
    Collection<CPDemandeEntity> recupererDemandesEnCoursEnAttente();

    /**
     * Méthode pour récupérer la liste des demandes en fonction de leur etat et de leur type, on renvoie par défaut les 40 premiers résultats
     * 
     * @param etat
     * @param type
     * @return Collection<CPDemandeEntity>
     */
    Collection<CPDemandeEntity> rechercherDemandesParTypeParEtat(String etat, String type);

    Collection<String> recupererTypesDemandeNom();

    Collection<String> recupererUtilisateursNom();

    /**
     * Méthode pour modifier l'état d'une demande
     * 
     * @param idCPDemande
     * @param nomEtat
     */
    void modifierEtatDemande(int idCPDemande, String nomEtat);

    /**
     * Méthode pour récupérer la liste des points de controle d'une demande
     * 
     * @param idCPDemande
     * @return Collection<CDPointDeControleEntity>
     */
    Collection<CPPointDeControleEntity> recupererCPPointControleDemande(int idDemande);

    /**
     * Méthode pour modifier la valeur d'un point de controle
     * 
     * @param idPointControle
     * @param nouvelleValeur
     */
    void modifierValeurPointControle(int idPointControle, String nouvelleValeur);

    /**
     * Méthode pour modifier récupérer une demande à partir de son id
     * 
     * @param idCPDemande
     * @return CPDemandeEntity
     */

    CPDemandeEntity recupererCPDemandeParId(int idCPDemande);

    Collection<CPDemandeEntity> filtrerDemandesParTypeParEtatParPersonneParDate(String etat, String type, String personne, Date date1, Date date2);

    void supprimerDemande(int idCPDemande);

    CPDemandeEntity recupererCPDemandeById(int idCPDemande);

    CPDemandeEntity recuperCPDemandeWithEtapes(int idCPDemande);

    List<CPDemandeEntity> rechercherDemandeParNom(String mot);

    CPEtapeEntity recupererCPEtapeByid(int idCPEtape);

    void modifierEtatCPEtape(int idCPEtape, String nomEtat);

    EtatEntity recupererEtatByNomEtat(String nomEtat);

    /**
     * Méthode pour modifier la date d'un etat à partir de l'id d'une demande
     * 
     * @param idCPDemande
     * 
     */

    void modifierDateDernierEtatDemande(int idCPDemande);

    PersonneEntity recupererPersonneByLdap(String ldap);

    void modifierCPDemande(int idLaDemande, String NomDemande, String CodeProjetDemande, String ChargeDemande, String ReferenceDemande);
    
    Collection<CPDemandeEntity> filtrerDemandesParTypeParPersonneParDate3Close(String etat, String type, String personne, Date date1, Date date2);

    Collection<CPDemandeEntity> recupererDemandeOuvert();
    
    Collection<CPDemandeEntity> recupererDemandeReOuvert();
    
    Collection<CPDemandeEntity> recupererDemandeEnCours();
    
    Collection<CPDemandeEntity> recupererDemandeEnAttente();
    
    Collection<CommentairesEntity> recupererCommentairesDemande(int idDemande);

    void ajouterUnCommentaire(String commentaire, PersonneEntity auteur, CPDemandeEntity demandeConcerne);
    
    void supprimerCommentaire(int idCommentaire);
    
    CommentairesEntity recupererCommentairesDemandeByID(int idCommentaire);
    
    Collection<CommentairesEntity> recupererCommentaires();
    
    List<PersonneEntity> rechercherPersonne(String ldap);
    
    void modifierCPParametreValeur(int idCPDemande, String idCDParametreDemande, String lesParams);
    
    Collection<CPPointDeControleEntity> recupererCPPointControleDemande2(int idDemande);
    
    void ajouterCPPointControle(CDDemandeEntity CDDemande, CPDemandeEntity CPDemande);
    
}
